package com.ruoyi.manage.service;

import java.util.List;
import com.ruoyi.manage.domain.Activity;
import com.ruoyi.manage.domain.ActivityUser;
import com.ruoyi.manage.domain.dto.UpdateActivityUserDto;
import com.ruoyi.manage.domain.vo.ActivityUserVo;
import com.ruoyi.manage.domain.vo.ActivityVo;
import com.ruoyi.manage.domain.vo.EnrollUser;

/**
 * 活动信息Service接口
 * 
 * @author zzg
 * @date 2025-05-10
 */
public interface IActivityService 
{
    /**
     * 查询活动信息
     * 
     * @param activityId 活动信息主键
     * @return 活动信息
     */
    public Activity selectActivityByActivityId(Long activityId);

    /**
     * 查询活动和用户的连接信息
     * @param activityUser
     * @return
     */
    public ActivityUser selectActivityByActivityUser(ActivityUser activityUser);

    /**
     * 查询活动信息列表
     * 
     * @param activity 活动信息
     * @return 活动信息集合
     */
    public List<Activity> selectActivityList(Activity activity);

    /**
     * 新增活动信息
     * 
     * @param activity 活动信息
     * @return 结果
     */
    public int insertActivity(Activity activity);

    /**
     * 修改活动信息
     * 
     * @param activity 活动信息
     * @return 结果
     */
    public int updateActivity(Activity activity);

    /**
     * 批量删除活动信息
     * 
     * @param activityIds 需要删除的活动信息主键集合
     * @return 结果
     */
    public int deleteActivityByActivityIds(Long[] activityIds);

    /**
     * 删除活动信息信息
     * 
     * @param activityId 活动信息主键
     * @return 结果
     */
    public int deleteActivityByActivityId(Long activityId);

    /**
     * 报名活动
     * @param activityUser
     * @return
     */
    int enroll(ActivityUser activityUser);


    /**
     * 用户取消报名
     * @param au
     * @return
     */
    Integer cancelEnroll(ActivityUser au);

    /**
     * 查询活动信息列表
     * @param userId
     * @return
     */
    List<ActivityUserVo> selectActivityVoList(Long userId,  Integer finish);

    List<EnrollUser> selectEnrollUserListByActivityId(Long activityId);

    /**
     * 批量修改用户的活动状态
     * @param updateActivityUserDto
     * @return
     */
    int updateBatchByActivityIdAndUserIds(UpdateActivityUserDto updateActivityUserDto);
}
